#include "RegistroFijoFeedIndex.h"

RegistroFijoFeedIndex::RegistroFijoFeedIndex()
{
        this->offsetRegistroEnArchivo = 0;
        this->LongitudRegistroEnArchivo = 0;
        this->setEstadoRegistro(true);
        this->setTamanioBuffer(sizeof(offsetRegistroEnArchivo) + sizeof(LongitudRegistroEnArchivo));
}

RegistroFijoFeedIndex::~RegistroFijoFeedIndex()
{
}

TCOffsetEnArchivo RegistroFijoFeedIndex::getOffsetRegistroEnArchivo()
{
        return this->offsetRegistroEnArchivo;
}

TCLongitudRegistroVariable RegistroFijoFeedIndex::getLongitudRegistroEnArchivo()
{
        //solo uso los ultimos 7 bits de la longitud
        return (this->LongitudRegistroEnArchivo & 0x7FFFFFFF);
}

TCBooleano RegistroFijoFeedIndex::getEstadoRegistro()
{
        //el primer bit de la longitud es el estado
        return ((this->LongitudRegistroEnArchivo & 0x80000000) != 0);                                                                     
}
                                                                     
void RegistroFijoFeedIndex::setOffsetRegistroEnArchivo(TCOffsetEnArchivo value)
{
        this->offsetRegistroEnArchivo = value;        
}

void RegistroFijoFeedIndex::setLongitudRegistroEnArchivo(TCLongitudRegistroVariable value)
{
        if (this->getEstadoRegistro())
        {
                this->LongitudRegistroEnArchivo =
                        (value | 0x80000000);
        }
        else
        {
                this->LongitudRegistroEnArchivo =
                        (value & 0x7FFFFFFF);
        }
}

void RegistroFijoFeedIndex::setEstadoRegistro(TCBooleano value)
{
        if (value)
        {
                this->LongitudRegistroEnArchivo =
                        (this->LongitudRegistroEnArchivo | 0x80000000);
        }
        else
        {
                this->LongitudRegistroEnArchivo =
                        (this->LongitudRegistroEnArchivo & 0x7FFFFFFF);

        }
}


void RegistroFijoFeedIndex::fillBuffer()
{
        this->setTamanioBuffer(sizeof(this->offsetRegistroEnArchivo) + sizeof(this->LongitudRegistroEnArchivo));
        this->crearBuffer();
        this->putIntoBuffer(&this->offsetRegistroEnArchivo, sizeof(this->offsetRegistroEnArchivo));
        this->putIntoBuffer(&this->LongitudRegistroEnArchivo, sizeof(this->LongitudRegistroEnArchivo));
}

void RegistroFijoFeedIndex::readFromBuffer()
{
        this->getFromBuffer(&this->offsetRegistroEnArchivo, sizeof(this->offsetRegistroEnArchivo));
        this->getFromBuffer(&this->LongitudRegistroEnArchivo, sizeof(this->LongitudRegistroEnArchivo));
}


